package com.cino.demos.controller.file;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

public class BasicDownload {
    public static void main(String[] args) throws Exception {
        // 1. 创建一个URL对象，指向要下载的资源
//        URL url = new URL("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");

        //解决方案一：换一个下载地址，使用没有反爬虫机制的图片源
      URL url = new URL("https://picsum.photos/800/600");

/*

        //解决方案二：使用代理服务器
        URL url = new URL("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");

        //设置一个你可以访问的代理服务器
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7897));

        //通过代理去发起连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);

*/

        // 2. 获取输入流，连接到网络资源
        InputStream inputStream = url.openStream();

        // 3. 创建输出流，连接到本地文件
//        OutputStream outputStream = new FileOutputStream("google.png");
        OutputStream outputStream = new FileOutputStream("random_image.jpg");

        // 4. 数据的核心传输过程：边读边写
        int data;
        // read() 方法每次只读一个字节，读到文件末尾时返回 -1
        while ((data = inputStream.read()) != -1) {
            outputStream.write(data); // 把读到的字节写出去
        }

        System.out.println("下载完成！");

        // 5. 关闭资源（非常重要！）
        outputStream.close();
        inputStream.close();
    }
}